package srg

import (
	"fmt"
	"time"

	"github.com/redis/go-redis/v9"
)

var dLockRdsHead string

// 新增分布式悲观锁
func DLockAdd(key string, expiration time.Duration) bool {
	ok, err := srds.SetNX(ctx, dLockRdsHead+key, "", expiration).Result()

	if err != nil {
		fmt.Println(err)
		return false
	}

	return ok
}

// 更新分布式悲观锁过期时间
func DLockSetTime(key string, expiration time.Duration) error {

	return srds.Set(ctx, dLockRdsHead+key, "", expiration).Err()
}

// 删除分布式悲观锁
func DLockRelease(key string) error {

	return srds.Del(ctx, dLockRdsHead+key).Err()
}

// 判断分布式悲观锁是否存在
func DLockExist(key string) (bool, error) {
	_, err := srds.Get(ctx, dLockRdsHead+key).Result()

	if err == nil { //没有错误,值存在
		return true, nil
	} else if err == redis.Nil { //没有值错误
		return false, nil
	} else {
		return false, err
	}

}
